home *** CD-ROM | disk | FTP | other *** search
/ Mac Power 1996 October / MACPOWER-1996-10.ISO.7z / MACPOWER-1996-10.ISO / AMUG / Internet_31 / NetCacheResolver 0.9d6 / NetCacheResolver 0.9d6 ト / library / NCR_Error.c < prev    next >
Text File  |  1996-05-12  |  5KB  |  191 lines

  1. // NetCache Resolver, 1995 (C) Mizutori Tetsuya
  2. // - NCR_Error.c, October 8, 1995
  3. // This document is pretty printed in 10-point Geneva font.
  4.  
  5. #include "NCR_Error.h"
  6.  
  7. // prototypes
  8. static short DisplayAlert (Boolean fatal );
  9. static StringPtr ErrAE ( OSErr errCode );
  10. static StringPtr ErrMEM ( OSErr errCode );
  11. static StringPtr ErrFS ( OSErr errCode );
  12.  
  13. /***** Do Error Messages *****/
  14. #define    kAlertID        1000
  15. #define    kErrStringID    1000
  16. #define    kNilFilterProc    nil
  17. #define    kMoveToFront    (WindowPtr)-1L
  18.  
  19. void ErrorMessage ( long err, StringPtr string, Boolean fatal )
  20. {
  21.     Str31    errStr;
  22.     Str255    str = "¥p";
  23.     
  24.     NumToString( err, errStr );
  25.     
  26.     ParamText( "¥pError = ", errStr, "¥p¥r", string );
  27.     
  28.     DisplayAlert( fatal );
  29. }
  30.  
  31. void ErrorMessageFS ( long err, Boolean fatal )
  32. {
  33.     ParamText( "¥pFile System Error:¥r", ErrFS(err), "¥p", "¥p" );
  34.  
  35.     DisplayAlert( fatal );
  36. }
  37.  
  38. void ErrorMessageAE ( long err, Boolean fatal )
  39. {
  40.     ParamText( "¥pApple Event Error:¥r", ErrAE(err), "¥p", "¥p" );
  41.  
  42.     DisplayAlert( fatal );
  43. }
  44.  
  45. void ErrorMessageMEM ( long err, Boolean fatal )
  46. {
  47.     ParamText( "¥pMemory System Error:¥r", ErrMEM(err), "¥p", "¥p" );
  48.  
  49.     DisplayAlert( fatal );
  50. }
  51.  
  52.  
  53. static short DisplayAlert (Boolean fatal )
  54. {
  55.     short        item;
  56.  
  57.     if ( fatal ) {
  58.         item = StopAlert( kAlertID, kNilFilterProc );
  59.         ExitToShell();
  60.     } else {
  61.         item = NoteAlert( kAlertID, kNilFilterProc );
  62.         if ( item == cancel ) ExitToShell();
  63.     }
  64.  
  65.     return item;
  66. }
  67.  
  68. /***** Error messages for File System *****/
  69. static StringPtr ErrFS ( OSErr errCode )
  70. {
  71.     StringPtr    s;
  72.  
  73.     switch ( errCode ) {
  74.         case noErr:            s = "¥pNo error"; break;
  75.         case ioErr:            s = "¥pI/O error"; break;
  76.         case opWrErr:        s = "¥pFile already open for writing"; break;
  77.         case permErr:        s = "¥pAttempt to open locked file for writing"; break;
  78.         case wrPermErr:    s = "¥pWrite permittions does not allow writing"; break;
  79.         case fLckdErr:        s = "¥pFile is locked"; break;
  80.         case tmfoErr:        s = "¥pToo many files open"; break;
  81.         case wPrErr:        s = "¥pDiskette is write-protected"; break;
  82.         case dirFulErr:        s = "¥pDirectory is full"; break;
  83.         case dskFulErr:        s = "¥pDisk is full"; break;
  84.         default:            s = "¥pUnknown error"; break;
  85.     }
  86.  
  87.     return s;
  88. }
  89.  
  90.  
  91. /***** Error messages for Memory System *****/
  92. static StringPtr ErrMEM ( OSErr errCode )
  93. {
  94.     StringPtr    s;
  95.  
  96.     switch ( errCode ) {
  97.         case paramErr:        s = "¥pError in parameter list"; break;
  98.         case memROZErr:    s = "¥pOperation on a read-only zone"; break;
  99.         case memFullErr:    s = "¥pNot enough memory"; break;
  100.         case nilHandleErr:    s = "¥pNIL master pointer"; break;
  101.         case memWZErr:        s = "¥pAttempt to operate on a free block"; break;
  102.         case memPurErr:    s = "¥pAttempt to purge a locked block"; break;
  103.         case memBCErr:        s = "¥pBlock check failed"; break;
  104.         case memLockedErr:    s = "¥pBlock is locked"; break;
  105.     }
  106.     
  107.     return s;
  108. }
  109.  
  110. /***** Error messages for Apple Event *****/
  111. static StringPtr ErrAE ( OSErr errCode )
  112. {
  113.     StringPtr    s;
  114.  
  115.     switch ( errCode ) {
  116.         case noErr:                s = "¥pNo error"; break;
  117.         case paramErr:            s = "¥pParameter error"; break;
  118.         case memFullErr:        s = "¥pNot enough room in heap zone"; break;
  119.         case errAECoercionFail:    s = "¥pData could not be coerced"; break;
  120.         case errAEWrongDataType:    s = "¥pWrong descriptor type"; break;
  121.         case errAEDescNotFound :    s = "¥pDescriptor record was not found"; break;
  122.         case errAENotAEDesc:        s = "¥pNot a valid descriptor record"; break;
  123.         case errAEReplyNotValid:    s = "¥pReply has not yet arrived"; break;
  124.         default:                s = "¥pUnknown error"; break;
  125.     }
  126.  
  127.     return  s;
  128. }
  129.  
  130. /***** Gestalt check *****/
  131. void GestaltCheck ( OSType gestaltCode )
  132. {
  133.     StringPtr    s1,s2,s3,s4;
  134.     long        feature, mask;
  135.     Boolean    result;
  136.     OSErr    err;
  137.  
  138.     switch ( gestaltCode ) {
  139.         case gestaltProcessorType:
  140.             mask = gestalt68020;
  141.             s1 = "¥pError: Problem in calling Gestalt!";
  142.             s2 = "¥pSorry, this program requires 68020 CPU, or later.";
  143.             break;
  144.         case gestaltSystemVersion:
  145.             mask = 0x0700;
  146.             s1 = "¥pError: Problem in calling Gestalt!";
  147.             s2 = "¥pSorry, this program requires System 7, or later.";
  148.             break;
  149.         case gestaltAppleEventsAttr:
  150.             mask = gestaltAppleEventsPresent;
  151.             s1 = "¥pError: Problem in calling Gestalt!";
  152.             s2 = "¥pError: Apple events not available!";
  153.             break;
  154.         case gestaltStandardFileAttr:
  155.             mask = gestaltStandardFile58;
  156.             s1 = "¥pError: Gestalt for Standard File Package";
  157.             s2 = "¥pError: Gestalt for The new Standard File Package";
  158.             break;
  159.         case gestaltFSAttr:
  160.             mask = gestaltHasFSSpecCalls;
  161.             s1 = "¥pError: File System Attributes is not supported.";
  162.             s2 = "¥pError: The new FSSpec File Manager is not supported.";
  163.             break;
  164.         default:
  165.             mask = 0;
  166.             s1 = "¥pError: Gestalt for Unknown";
  167.             s2 = "¥pError: Gestalt for Unknown";
  168.             break; }
  169.  
  170.     err = Gestalt( gestaltCode, &feature );
  171.     if ( err != noErr ) ErrorMessage( err, s1, true );
  172.  
  173.     switch ( gestaltCode ) {
  174.         case gestaltProcessorType:
  175.         case gestaltSystemVersion:
  176.             result = ( feature >= mask );
  177.             break;
  178.         case gestaltAppleEventsAttr:
  179.         case gestaltStandardFileAttr:
  180.         case gestaltFSAttr:
  181.             result = ( ( feature & (1L<<mask) ) != 0 );
  182.             break;
  183.         default:
  184.             result = false;
  185.             break; }
  186.  
  187.     if ( ! result ) ErrorMessage( err, s2, true );
  188. }
  189.  
  190. // end of program
  191.